package com.ptms.config;

import com.ptms.vo.ResultVO;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice  // 全局异常处理（针对 Controller）
public class GlobalExceptionHandler {

    // 处理参数校验异常（@Valid 注解触发）
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResultVO<?> handleValidException(MethodArgumentNotValidException e) {
        BindingResult bindingResult = e.getBindingResult();
        FieldError firstError = bindingResult.getFieldErrors().get(0);  // 获取第一个错误
        String errorMsg = firstError.getDefaultMessage();  // 错误提示信息
        return ResultVO.fail(400, errorMsg);
    }

    // 处理其他未知异常
    @ExceptionHandler(Exception.class)
    public ResultVO<?> handleException(Exception e) {
        e.printStackTrace();  // 打印异常日志（开发调试用）
        return ResultVO.fail(500, "服务器内部错误，请稍后重试");
    }
}
